#include <iostream>

#include "iostream"
#include "vector"
#include "unordered_map"
#include "unordered_set"
#include "algorithm"
#include "string"
#include "list"
#include "string.h"

class OneLoop {
public:
    void q_ope(int x,int y){
        for(int i=1;i*x<=w;i++){
            for(int j=1;j*y<=h;j++){
                mat[j-1][i-1]=!mat[j-1][i-1];
            }
        }
    }
    std::vector<std::vector<char>> mat;
    int w;
    int h;
    bool run(int n,int m) {
        h=n;w=m;
        std::vector<char> line(m,true);
        for(int i=0;i<n;i++){
            mat.push_back(line);
        }
        for(int i=1;i<=n;i++){
            for(int j=1;j<=m;j++){
                q_ope(i,j);
            }
        }
        int cnt=0;
        for(auto &line:mat){
            for(auto c:line){
                if(!c){
                    cnt++;
                }
            }
        }
        printf("%d\n",cnt);
        return true;
    }
};

class Solution {
public:
    void run() {

        bool first = true;
        int64_t a, b, c, d, e;
        char cc;
        //        std::cin >> a;
//        std::string s1,s2;
//        while (1){
        while (
                std::cin>>a>>b
//                std::getline(std::cin,s1)
//                1
                ) {
//            std::getline(std::cin,s2);
            OneLoop l;
            if (!l.run(a,b)) {
//                return;
            }
        }


    }
};

int main() {

    //    bool cur_num= true;
    Solution().run();
    return 0;
}

